
from time import sleep

from airtest.core.api import shell

from wechat_test.page.base_page import BasePage


class SearchPage(BasePage):

    def searchtext(self,name):

        try:
            sleep(3)
            self.poco('android.widget.Image').click()
            # 识别不到搜索控件，使用shell命令输入
            shell(f'am broadcast -a INPUT_TEXT --es text "{name}"')
            self.log_info(f'搜索框中输入{name}')
            sleep(1)
            self.poco(text='搜索').click()
            self.log_info('点击搜索按钮')
        except:
            self.poco('com.tencent.mm:id/yq').click([0.5, 0.14])
            self.log_info('坐标点击搜索框')
            shell(f'am broadcast -a INPUT_TEXT --es text "{name}"')
            self.log_info(f'搜索框中输入{name}')
            self.poco(nameMatches="com.tencent.mm:id.*?").wait(2).click([0.9,0.15])
            self.log_info('点击搜索按钮-坐标')
            sleep(1)

        if self.poco(text='立即播放').exists():
            self.log_info(f"播放短剧成功：{name}")
            self.poco(text='立即播放').click()
        else:
            self.poco("com.tencent.mm:id/yq").click([0.5, 0.24])
            self.log_info("使用坐标点击立即播放")

        if self.poco(text='微信授权登录').wait(2).exists():
            self.log_info("用户未登录开始登录流程")
            self.poco(text='微信授权登录').wait(2).click()
            self.log_info("点击同意并继续（坐标定位）")
            self.poco(nameMatches="com.tencent.mm:id.*?").wait(5).click([0.7, 0.9])
        sleep(3)
        try:
            self.poco(nameMatches="com.tencent.mm:id.*?").wait(5).click([0.5, 0.4])
            self.log_info("点击屏幕")
            sleep(1)
            self.poco(desc='返回',type= 'android.widget.Button').wait(1).click()
            self.log_info("点返回按钮")
            sleep(2)
            self.poco(desc='返回',type='android.widget.Button').wait(1).click()

        except:

            self.log_info("坐标点返回")
            self.poco(nameMatches="com.tencent.mm:id.*?").wait(5).click([0.08, 0.07])
            sleep(1)
            self.poco(nameMatches="com.tencent.mm:id.*?").wait(5).click([0.08, 0.07])
        self.log_info("退出播放页，返回剧场页面")
        from wechat_test.page.mini_page import MiniProgram
        return  MiniProgram(self.poco)



    def searchplay(self,name,text):


        try:
            sleep(3)
            self.poco('android.widget.Image').click()
            # 识别不到搜索控件，使用shell命令输入
            shell(f'am broadcast -a INPUT_TEXT --es text "{name}"')
            self.log_info(f'搜索框中输入{name}')
            sleep(1)
            self.poco(text='搜索').click()
            self.log_info('点击搜索按钮')
        except:
            self.poco(nameMatches="com.ss.android.ugc.aweme:id.*?",type='android.widget.LinearLayout').wait(2).click([0.9,0.15])
            self.log_info('点击搜索按钮-坐标')
            sleep(1)

        if self.poco(text='立即播放').exists():
            self.log_info(f"播放短剧成功：{name}")
            self.poco(text='立即播放').click()
        else:
            self.poco("com.tencent.mm:id/yq").click([0.5, 0.24])
            self.log_info("使用坐标点击立即播放")

        if self.poco(text='微信授权登录').wait(2).exists():
            self.log_info("用户未登录开始登录流程")
            self.poco(text='微信授权登录').wait(2).click()
            self.log_info("点击同意并继续（坐标定位）")
            self.poco(nameMatches="com.tencent.mm:id.*?").wait(5).click([0.7, 0.9])
        sleep(2)

        count = 0
        while count < 10:
            sleep(1)
            try:
                sleep(3)
                self.log_info(f'点击播放暂停：{name}')
                self.poco(resourceId='com.tencent.mm:id/yq', name='com.tencent.mm:id/yq').click()
                self.log_info(f'点击选集按钮：{name}')
                self.poco(text=f'{name}').click()
                # 通过坐标点选择15集计费剧目，如果换设备可能点不到
                self.log_info(f'根据坐标点击计费集15：{name}')
                self.poco(type='android.view.ViewGroup', name='com.tencent.mm:id/yq').click([0.45, 0.799])
                sleep(1)
                break
            except Exception as e:
                self.log_info(f'出现错误：{e}')
                self.log_info(f'未找到该短剧：{name}')
            count += 1
            self.log_info(f'查找{count}次')
        sleep(1)
        # 循环查询存在充值弹框，超过11次报错误
        texts = []
        sleep(1)
        # 如果查到测试充值就算弹出资费页，就跳出循环
        if self.poco(text=f'{text}').exists():
            self.log_info(f"查询{count}次找到{text}")
            sleep(1)
            self.poco(text=f'{text}').click()
            self.log_info(f'点击[2.9元]弹框拉起支付成功')
            # 根据坐标点击协议
            self.poco(name='com.tencent.mm:id/yq', type="android.view.ViewGroup").click([0.1, 0.95])
            try:
                self.poco(text="立即购买").click()
            except:
                self.poco(name='com.tencent.mm:id/yq', type="android.view.ViewGroup").click([0.5, 0.9])
            sleep(3)
            for x in range(0, 10):
                ls = self.poco(f"com.tencent.mm:id/tenpay_keyboard_{x}")
                texts.append(ls.attr('text'))
        else:
            try:
                self.log_info(f'查询{count}次没找到{text}，使用坐标点击')
                self.poco('com.tencent.mm:id/yq').click([0.7, 0.7])
                self.poco(name='com.tencent.mm:id/yq', type="android.view.ViewGroup").click([0.1, 0.95])
                try:
                    self.poco(text="立即购买").click()
                except:
                    self.poco(name='com.tencent.mm:id/yq', type="android.view.ViewGroup").click([0.5, 0.9])
            except:
                self.log_info('点击屏幕加载元素')
                self.poco(package='com.tencent.mm', name='android.widget.FrameLayout').click([0.5,0.55])
            sleep(5)
            try:
                for x in range(0, 10):
                    ls = self.poco(f"com.tencent.mm:id/tenpay_keyboard_{x}")
                    texts.append(ls.attr('text'))
                self.log_info(f'获取密码数值：{texts}')
            except Exception as e:
                self.log_info(f'异常处理{e}')
            finally:
                self.poco(name='android.widget.LinearLayout').click([0.1, 0.328])
                # self.poco(name='关闭', type='android.widget.Button').click()
        return texts





    def serachresult(self):
        self.poco(desc='返回').click()
        searchlist = []
        try:
            eles = self.poco(name='android.widget.TextView',type='android.widget.TextView')
            for i in eles:
                if i.get_text() != '':
                    searchlist.append(i.get_text())
            self.log_info(f'获取搜索结果元素{searchlist}')
        except:
            self.log_info('搜索成功，组件暂时无法识别')
        return searchlist




    def hotsearchlist(self):
        """热搜榜"""
        sleep(3)
        self.poco('android.widget.Image').click()
        element = []
        sleep(3)
        for i in self.poco(name='android.widget.TextView', type='android.widget.TextView'):
            element.append(i.get_text())
        self.log_info(f"页面元素:{element}")
        return element





